{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "53bc0e5a",
   "metadata": {},
   "outputs": [],
   "source": [
    "import csv\n",
    "import matplotlib.pyplot as plt  # 导入pyplot模块\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码问题\n",
    "plt.rcParams['axes.unicode_minus'] = False  # 解决正负号乱码问题"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "23dc0cf8",
   "metadata": {},
   "outputs": [],
   "source": [
    "fields1 = []\n",
    "data1 = []\n",
    "fnum = 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "61b382a5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "18387\n"
     ]
    }
   ],
   "source": [
    "f1 = open('./data/ssd_failure_tag.csv','r')\n",
    "failure = csv.reader(f1,delimiter=',')\n",
    "fields1 = failure.__next__()\n",
    "for row in failure:\n",
    "    data1.append(row)\n",
    "#    print(row)\n",
    "    fnum = fnum + 1\n",
    "print(fnum)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "10183528",
   "metadata": {},
   "outputs": [],
   "source": [
    "year1 = [0,0,0,0,0,0,0,0,0,0,0]\n",
    "year2 = [0,0,0,0,0,0,0,0,0,0,0]\n",
    "year3 = [0,0,0,0,0,0,0,0,0,0,0]\n",
    "year4 = [0,0,0,0,0,0,0,0,0,0,0]\n",
    "year5 = [0,0,0,0,0,0,0,0,0,0,0]\n",
    "year6 = [0,0,0,0,0,0,0,0,0,0,0]\n",
    "high_percentage_models = [0,0,0,0,0,0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "4da5d17b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3194\n",
      "[19, 10, 23, 36, 15, 0, 6, 26, 269, 1901, 889]\n",
      "0.9649342517219787\n"
     ]
    }
   ],
   "source": [
    "for i in range(0,fnum,1):\n",
    "    if data1[i][28] == '':\n",
    "        continue\n",
    "    data1[i][28] = data1[i][28].strip()\n",
    "    data1[i][28] = data1[i][28].strip(\"\\n\")\n",
    "    data1[i][28] = data1[i][28].strip(\"\\t\")\n",
    "    data1[i][28] = data1[i][28].strip(\"[\")\n",
    "    data1[i][28] = data1[i][28].strip(\"]\")\n",
    "    y1 = int(int(float(data1[i][28]))/(24*365))\n",
    "    if y1 >= 6:\n",
    "        continue\n",
    "    if y1 == 0:\n",
    "        if data1[i][0] == 'A1':\n",
    "            year1[0] = year1[0] + 1\n",
    "        elif data1[i][0] == 'A2':\n",
    "            year1[1] = year1[1] + 1\n",
    "        elif data1[i][0] == 'A3':\n",
    "            year1[2] = year1[2] + 1\n",
    "        elif data1[i][0] == 'A4':\n",
    "            year1[3] = year1[3] + 1\n",
    "        elif data1[i][0] == 'A5':\n",
    "            year1[4] = year1[4] + 1\n",
    "        elif data1[i][0] == 'A6':\n",
    "            year1[5] = year1[5] + 1\n",
    "        elif data1[i][0] == 'B1':\n",
    "            year1[6] = year1[6] + 1\n",
    "        elif data1[i][0] == 'B2':\n",
    "            year1[7] = year1[7] + 1\n",
    "        elif data1[i][0] == 'B3':\n",
    "            year1[8] = year1[8] + 1\n",
    "        elif data1[i][0] == 'C1':\n",
    "            year1[9] = year1[9] + 1\n",
    "        elif data1[i][0] == 'C2':\n",
    "            year1[10] = year1[10] + 1\n",
    "\n",
    "num_of_year1 = 0\n",
    "for j in range(0,11,1):\n",
    "#    print(j)\n",
    "    num_of_year1 = num_of_year1 + year1[j]\n",
    "high_percentage_models[0] = (year1[2]+year1[8]+year1[9]+year1[10])/num_of_year1\n",
    "print(num_of_year1)\n",
    "print(year1)\n",
    "print(high_percentage_models[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "9a67c662",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "7437\n",
      "[28, 9, 54, 100, 97, 1, 32, 143, 1084, 5652, 237]\n",
      "0.9448702433777061\n"
     ]
    }
   ],
   "source": [
    "for i in range(0,fnum,1):\n",
    "    if data1[i][28] == '':\n",
    "        continue\n",
    "    data1[i][28] = data1[i][28].strip()\n",
    "    data1[i][28] = data1[i][28].strip(\"\\n\")\n",
    "    data1[i][28] = data1[i][28].strip(\"\\t\")\n",
    "    data1[i][28] = data1[i][28].strip(\"[\")\n",
    "    data1[i][28] = data1[i][28].strip(\"]\")\n",
    "    y1 = int(int(float(data1[i][28]))/(24*365))\n",
    "    if y1 >= 6:\n",
    "        continue\n",
    "    if y1 == 1:\n",
    "        if data1[i][0] == 'A1':\n",
    "            year2[0] = year2[0] + 1\n",
    "        elif data1[i][0] == 'A2':\n",
    "            year2[1] = year2[1] + 1\n",
    "        elif data1[i][0] == 'A3':\n",
    "            year2[2] = year2[2] + 1\n",
    "        elif data1[i][0] == 'A4':\n",
    "            year2[3] = year2[3] + 1\n",
    "        elif data1[i][0] == 'A5':\n",
    "            year2[4] = year2[4] + 1\n",
    "        elif data1[i][0] == 'A6':\n",
    "            year2[5] = year2[5] + 1\n",
    "        elif data1[i][0] == 'B1':\n",
    "            year2[6] = year2[6] + 1\n",
    "        elif data1[i][0] == 'B2':\n",
    "            year2[7] = year2[7] + 1\n",
    "        elif data1[i][0] == 'B3':\n",
    "            year2[8] = year2[8] + 1\n",
    "        elif data1[i][0] == 'C1':\n",
    "            year2[9] = year2[9] + 1\n",
    "        elif data1[i][0] == 'C2':\n",
    "            year2[10] = year2[10] + 1\n",
    "\n",
    "num_of_year2 = 0\n",
    "for j in range(0,11,1):\n",
    "#    print(j)\n",
    "    num_of_year2 = num_of_year2 + year2[j]\n",
    "high_percentage_models[1] = (year2[2]+year2[8]+year2[9]+year2[10])/num_of_year2\n",
    "print(num_of_year2)\n",
    "print(year2)\n",
    "print(high_percentage_models[1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "90625ea1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4539\n",
      "[116, 122, 20, 237, 110, 28, 161, 334, 454, 2952, 5]\n",
      "0.7558933685833884\n"
     ]
    }
   ],
   "source": [
    "for i in range(0,fnum,1):\n",
    "    if data1[i][28] == '':\n",
    "        continue\n",
    "    data1[i][28] = data1[i][28].strip()\n",
    "    data1[i][28] = data1[i][28].strip(\"\\n\")\n",
    "    data1[i][28] = data1[i][28].strip(\"\\t\")\n",
    "    data1[i][28] = data1[i][28].strip(\"[\")\n",
    "    data1[i][28] = data1[i][28].strip(\"]\")\n",
    "    y1 = int(int(float(data1[i][28]))/(24*365))\n",
    "    if y1 >= 6:\n",
    "        continue\n",
    "    if y1 == 2:\n",
    "        if data1[i][0] == 'A1':\n",
    "            year3[0] = year3[0] + 1\n",
    "        elif data1[i][0] == 'A2':\n",
    "            year3[1] = year3[1] + 1\n",
    "        elif data1[i][0] == 'A3':\n",
    "            year3[2] = year3[2] + 1\n",
    "        elif data1[i][0] == 'A4':\n",
    "            year3[3] = year3[3] + 1\n",
    "        elif data1[i][0] == 'A5':\n",
    "            year3[4] = year3[4] + 1\n",
    "        elif data1[i][0] == 'A6':\n",
    "            year3[5] = year3[5] + 1\n",
    "        elif data1[i][0] == 'B1':\n",
    "            year3[6] = year3[6] + 1\n",
    "        elif data1[i][0] == 'B2':\n",
    "            year3[7] = year3[7] + 1\n",
    "        elif data1[i][0] == 'B3':\n",
    "            year3[8] = year3[8] + 1\n",
    "        elif data1[i][0] == 'C1':\n",
    "            year3[9] = year3[9] + 1\n",
    "        elif data1[i][0] == 'C2':\n",
    "            year3[10] = year3[10] + 1\n",
    "\n",
    "num_of_year3 = 0\n",
    "for j in range(0,11,1):\n",
    "#    print(j)\n",
    "    num_of_year3 = num_of_year3 + year3[j]\n",
    "high_percentage_models[2] = (year3[2]+year3[8]+year3[9]+year3[10])/num_of_year3\n",
    "print(num_of_year3)\n",
    "print(year3)\n",
    "print(high_percentage_models[2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "2aa9652e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1329\n",
      "[276, 278, 218, 87, 38, 168, 164, 100, 0, 0, 0]\n",
      "0.16403310759969902\n"
     ]
    }
   ],
   "source": [
    "for i in range(0,fnum,1):\n",
    "    if data1[i][28] == '':\n",
    "        continue\n",
    "    data1[i][28] = data1[i][28].strip()\n",
    "    data1[i][28] = data1[i][28].strip(\"\\n\")\n",
    "    data1[i][28] = data1[i][28].strip(\"\\t\")\n",
    "    data1[i][28] = data1[i][28].strip(\"[\")\n",
    "    data1[i][28] = data1[i][28].strip(\"]\")\n",
    "    y1 = int(int(float(data1[i][28]))/(24*365))\n",
    "    if y1 >= 6:\n",
    "        continue\n",
    "    if y1 == 3:\n",
    "        if data1[i][0] == 'A1':\n",
    "            year4[0] = year4[0] + 1\n",
    "        elif data1[i][0] == 'A2':\n",
    "            year4[1] = year4[1] + 1\n",
    "        elif data1[i][0] == 'A3':\n",
    "            year4[2] = year4[2] + 1\n",
    "        elif data1[i][0] == 'A4':\n",
    "            year4[3] = year4[3] + 1\n",
    "        elif data1[i][0] == 'A5':\n",
    "            year4[4] = year4[4] + 1\n",
    "        elif data1[i][0] == 'A6':\n",
    "            year4[5] = year4[5] + 1\n",
    "        elif data1[i][0] == 'B1':\n",
    "            year4[6] = year4[6] + 1\n",
    "        elif data1[i][0] == 'B2':\n",
    "            year4[7] = year4[7] + 1\n",
    "        elif data1[i][0] == 'B3':\n",
    "            year4[8] = year4[8] + 1\n",
    "        elif data1[i][0] == 'C1':\n",
    "            year4[9] = year4[9] + 1\n",
    "        elif data1[i][0] == 'C2':\n",
    "            year4[10] = year4[10] + 1\n",
    "\n",
    "num_of_year4 = 0\n",
    "for j in range(0,11,1):\n",
    "#    print(j)\n",
    "    num_of_year4 = num_of_year4 + year4[j]\n",
    "high_percentage_models[3] = (year4[2]+year4[8]+year4[9]+year4[10])/num_of_year4\n",
    "print(num_of_year4)\n",
    "print(year4)\n",
    "print(high_percentage_models[3])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "c583a199",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1601\n",
      "[244, 448, 855, 0, 0, 28, 25, 1, 0, 0, 0]\n",
      "0.5340412242348532\n"
     ]
    }
   ],
   "source": [
    "for i in range(0,fnum,1):\n",
    "    if data1[i][28] == '':\n",
    "        continue\n",
    "    data1[i][28] = data1[i][28].strip()\n",
    "    data1[i][28] = data1[i][28].strip(\"\\n\")\n",
    "    data1[i][28] = data1[i][28].strip(\"\\t\")\n",
    "    data1[i][28] = data1[i][28].strip(\"[\")\n",
    "    data1[i][28] = data1[i][28].strip(\"]\")\n",
    "    y1 = int(int(float(data1[i][28]))/(24*365))\n",
    "    if y1 >= 6:\n",
    "        continue\n",
    "    if y1 == 4:\n",
    "        if data1[i][0] == 'A1':\n",
    "            year5[0] = year5[0] + 1\n",
    "        elif data1[i][0] == 'A2':\n",
    "            year5[1] = year5[1] + 1\n",
    "        elif data1[i][0] == 'A3':\n",
    "            year5[2] = year5[2] + 1\n",
    "        elif data1[i][0] == 'A4':\n",
    "            year5[3] = year5[3] + 1\n",
    "        elif data1[i][0] == 'A5':\n",
    "            year5[4] = year5[4] + 1\n",
    "        elif data1[i][0] == 'A6':\n",
    "            year5[5] = year5[5] + 1\n",
    "        elif data1[i][0] == 'B1':\n",
    "            year5[6] = year5[6] + 1\n",
    "        elif data1[i][0] == 'B2':\n",
    "            year5[7] = year5[7] + 1\n",
    "        elif data1[i][0] == 'B3':\n",
    "            year5[8] = year5[8] + 1\n",
    "        elif data1[i][0] == 'C1':\n",
    "            year5[9] = year5[9] + 1\n",
    "        elif data1[i][0] == 'C2':\n",
    "            year5[10] = year5[10] + 1\n",
    "\n",
    "num_of_year5 = 0\n",
    "for j in range(0,11,1):\n",
    "#    print(j)\n",
    "    num_of_year5 = num_of_year5 + year5[j]\n",
    "high_percentage_models[4] = (year5[2]+year5[8]+year5[9]+year5[10])/num_of_year5\n",
    "print(num_of_year5)\n",
    "print(year5)\n",
    "print(high_percentage_models[4])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "0741dc83",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "274\n",
      "[64, 11, 199, 0, 0, 0, 0, 0, 0, 0, 0]\n",
      "0.7262773722627737\n"
     ]
    }
   ],
   "source": [
    "for i in range(0,fnum,1):\n",
    "    if data1[i][28] == '':\n",
    "        continue\n",
    "    data1[i][28] = data1[i][28].strip()\n",
    "    data1[i][28] = data1[i][28].strip(\"\\n\")\n",
    "    data1[i][28] = data1[i][28].strip(\"\\t\")\n",
    "    data1[i][28] = data1[i][28].strip(\"[\")\n",
    "    data1[i][28] = data1[i][28].strip(\"]\")\n",
    "    y1 = int(int(float(data1[i][28]))/(24*365))\n",
    "    if y1 >= 6:\n",
    "        continue\n",
    "    if y1 == 5:\n",
    "        if data1[i][0] == 'A1':\n",
    "            year6[0] = year6[0] + 1\n",
    "        elif data1[i][0] == 'A2':\n",
    "            year6[1] = year6[1] + 1\n",
    "        elif data1[i][0] == 'A3':\n",
    "            year6[2] = year6[2] + 1\n",
    "        elif data1[i][0] == 'A4':\n",
    "            year6[3] = year6[3] + 1\n",
    "        elif data1[i][0] == 'A5':\n",
    "            year6[4] = year6[4] + 1\n",
    "        elif data1[i][0] == 'A6':\n",
    "            year6[5] = year6[5] + 1\n",
    "        elif data1[i][0] == 'B1':\n",
    "            year6[6] = year6[6] + 1\n",
    "        elif data1[i][0] == 'B2':\n",
    "            year6[7] = year6[7] + 1\n",
    "        elif data1[i][0] == 'B3':\n",
    "            year6[8] = year6[8] + 1\n",
    "        elif data1[i][0] == 'C1':\n",
    "            year6[9] = year6[9] + 1\n",
    "        elif data1[i][0] == 'C2':\n",
    "            year6[10] = year6[10] + 1\n",
    "\n",
    "num_of_year6 = 0\n",
    "for j in range(0,11,1):\n",
    "#    print(j)\n",
    "    num_of_year6 = num_of_year6 + year6[j]\n",
    "high_percentage_models[5] = (year6[2]+year6[8]+year6[9]+year6[10])/num_of_year6\n",
    "print(num_of_year6)\n",
    "print(year6)\n",
    "print(high_percentage_models[5])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "c333b2ef",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[96.49342517219786, 94.4870243377706, 75.58933685833884, 16.4033107599699, 53.404122423485326, 72.62773722627736]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'High Failure Rate Model Percentage(%)')"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 900x450 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "for i in range(0,6,1):\n",
    "    high_percentage_models[i] = high_percentage_models[i]*100\n",
    "print(high_percentage_models)\n",
    "year_list = ['[0,1)', '[1,2)', '[2,3)', '[3,4)', '[4,5)', '[5,6)']\n",
    "#定义画布尺寸和分辨率\n",
    "plt.figure(figsize=(6, 3), dpi=150)\n",
    "\n",
    "#绘制柱状图\n",
    "x = range(len(year_list))\n",
    "plt.xticks(x, year_list)\n",
    "plt.bar(x, high_percentage_models, width=0.4, color=['#ffaa00' if i>100 else '#0066CC' for i in high_percentage_models])\n",
    "\n",
    "# 柱状图修饰\n",
    "# 添加提示信息\n",
    "plt.title(\"\")  # 添加标题\n",
    "plt.xlabel(\"Age(years)\")  # 添加x轴标签\n",
    "plt.ylabel(\"High Failure Rate Model Percentage(%)\")  # 添加y轴标签"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "ef3073a9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.7714285714285715\n"
     ]
    }
   ],
   "source": [
    "x1 = [6,5,4,3,2,1]\n",
    "x2 = [6,5,4,1,2,3]\n",
    "d = [0,0,0,0,0,0]\n",
    "dd = [0,0,0,0,0,0]\n",
    "for i in range(0,6,1):\n",
    "    d[i] = x1[i]-x2[i]\n",
    "    dd[i] = d[i]*d[i]\n",
    "sum_dd = 0\n",
    "for i in range(0,6,1):\n",
    "    sum_dd = sum_dd + dd[i]\n",
    "spearman = 1-6*sum_dd/(6*(6*6-1))\n",
    "print(spearman)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c0f74419",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
